package dominio;

public class EstadoCazador extends FantasmaEstado {
	private final static Integer AGRESIVIDAD_INICIAL = new Integer(1);
	private final static Integer MAX_AGRESIVIDAD = new Integer(3);
	
	public EstadoCazador() {
		super();

	}
	
	public EstadoCazador(Fantasma fantasma) {
		super();
		fantasma.getVivacidad().reinicioAgresividad();
	}
	
	
	@Override
	public void moverFantasma(Fantasma fantasma, IMovible pacman) {
		
		int x = MAX_AGRESIVIDAD - this.getAgresividad();
		if( x == fantasma.getContador()){
			fantasma.getVivacidad().perseguir(fantasma, pacman);
			fantasma.reiniciarContador();
		}else{
			fantasma.aumentarContador();
		}
		
	}

	@Override
	public void siguienteEstado(Fantasma fantasma) {
		if (fantasma.getComioPastilla()) {
			fantasma.setEstadoActual(new EstadoPresa());
			fantasma.setComioPastilla(false);
			fantasma.reiniciarContador();
		}
	}

	@Override
	public void colisionar(IMovible fantasma, Pacman pacman) {
		if (fantasma.getNodoActual().equals(pacman.getNodoActual())) {
			pacman.setMuerto(true);
		}		
	}

	@Override
	public void molestar() {
		if (getAgresividad() < (MAX_AGRESIVIDAD)) {
			setAgresividad(getAgresividad() + 1);
		}
		
	}
	
	public void molestar(Fantasma fantasma) {
		if (getAgresividad() < (MAX_AGRESIVIDAD)) {
			setAgresividad(getAgresividad() + 1);
			((Fantasma)fantasma).getVivacidad().cambioAgresividad();
		}
		
	}

	@Override
	public Integer getAgresividadInicial() {
		return AGRESIVIDAD_INICIAL;
	}
	
	@Override
	public String toString() {
		return "Cazador";
	}

}
